From: Florian Müllner Date: Thu, 28 Feb 2013 13:50:56 +0000 (+0100) Subject: extensionPrefs: Fix opening extension preferences on startup X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4627 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=6e89d2f46afa675ea1f53c66d95eb1539ac2226f;p=gnome-shell.git extensionPrefs: Fix opening extension preferences on startup gnome-shell-extension-prefs supports opening a specific extension's preferences directly from the command line by passing the UUID. However this broke when extension loading was changed to be processed asynchronously, as no extension has been loaded when the command line argument is processed. Fix by deferring opening the extension's preferences until all extensions have been loaded. https://bugzilla.gnome.org/show_bug.cgi?id=694858 --- diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js index 53a6966e5..683fcc36f 100644 --- a/js/extensionPrefs/main.js +++ b/js/extensionPrefs/main.js @@ -45,6 +45,7 @@ const Application = new Lang.Class({ this._extensionPrefsModules = {}; this._extensionIters = {}; + this._startupUuid = null; }, _buildModel: function() { @@ -203,6 +204,7 @@ const Application = new Lang.Class({ _scanExtensions: function() { let finder = new ExtensionUtils.ExtensionFinder(); finder.connect('extension-found', Lang.bind(this, this._extensionFound)); + finder.connect('extensions-loaded', Lang.bind(this, this._extensionsLoaded)); finder.scanExtensions(); }, @@ -212,6 +214,11 @@ const Application = new Lang.Class({ this._extensionIters[extension.uuid] = iter; }, + _extensionsLoaded: function() { + if (this._startupUuid && this._extensionAvailable(this._startupUuid)) + this._selectExtension(this._startupUuid); + this._startupUuid = null; + }, _onActivate: function() { this._window.present(); @@ -232,10 +239,10 @@ const Application = new Lang.Class({ // Strip off "extension:///" prefix which fakes a URI, if it exists uuid = stripPrefix(uuid, "extension:///"); - if (!this._extensionAvailable(uuid)) - return 1; - - this._selectExtension(uuid); + if (this._extensionAvailable(uuid)) + this._selectExtension(uuid); + else + this._startupUuid = uuid; } return 0; }